/-app
/-app/appRoot
/-app/appRoot/importExport
exportAllHTML.ts
exportAllZIP.ts
exportBlob.ts
loadFile.ts
saveFileName.ts
PageModel.ts
dragScroll.ts
/-app/koBindingHandlers
/-app/moreDialog
body.css
flyout-branding.css
flyout.css
start.ts
status.css
tree-and-bar.css
tree-details.css
/-docs ...
/-docs/types ...
/-docs/types/text ...
/-docs/types/text/base
/-docs/types/text/css
/-docs/types/text/html
/-docs/types/text/js
/-docs/types/text/json
/-docs/types/text/less
/-docs/types/text/sass
/-docs/types/text/scrollerView
/-docs/types/text/scss
/-docs/types/text/ts ...
TypeScriptDocHandler.ts
style.css
CodeMirror-ext.css
CodeMirrorDocHandler.ts
api.ts
load.ts
api.ts
listSubmodules.ts
load.ts
DocHost.ts
/-files
/-imports
/-imports/acorn
/-imports/codemirror
codemirror.css
codemirror.js
codemirror.mihailik.js
codemirror.original.js
css-hint.js
css.js
html-hint.js
htmlembedded.js
htmlmixed.js
javascript-hint.js
javascript.js
sass.js
show-hint.css
show-hint.js
tern.css
tern.js
xml-hint.js
xml.js
/-imports/knockout
/-imports/tern
/-imports/typescript
/-imports/zip.js
/-persistence
/-typescript
/-typings
errors.js
functions.ts
index.html
try.js
x
59
        if (!isalphanumeric(ch))
60
          break;
61
        start.ch--;
62
      }
63
      var matchText = lineText.slice(start.ch, cur.ch);
64
      var matchTextLower = matchText.toLowerCase();
65
      
66
      var completionEntries: CodeMirror.showHint.Completion[] = [];
67
      for (var i = 0; i < completions.entries.length; i++) {
68
        if (completionEntries.length > 16) break;
69
        var co = completions.entries[i];
70
        
71
        if (matchText && co.name.toLowerCase().indexOf(matchTextLower) < 0)
72
          continue;
73
        
74
        var det = typescriptService().service.getCompletionEntryDetails(this.path, curOffset, co.name);
75
​
76
        completionEntries.push(this._processCompletionEntry(co, det));
77
      }
78
​
79
      if (!completionEntries.length
80
         || (completionEntries.length === 1 && completionEntries[completionEntries.length - 1].text === matchText))
81
        return;
82
​
83
      var result: CodeMirror.showHint.CompletionResult = {
84
        list: completionEntries,
85
        from: start,
86
        to: cur
87
      };
88
​
89
      return result;
90
    }
91
​
92
    private _processCompletionEntry(co: ts.CompletionEntry, det: ts.CompletionEntryDetails): CodeMirror.showHint.Completion { 
93
      return {
94
        text: det.name,
95
        render: (element: HTMLElement, self, data) => {
96
          var startIndex = 0;
97
          if (det.displayParts.length>3
98
             && det.displayParts[0].text=='('
99
             && det.displayParts[2].text==')')
100
            startIndex = 3;
101
          for (var i = startIndex; i < det.displayParts.length; i++) {
102
            var span = document.createElement('span');
103
            span.textContent = det.displayParts[i].text;
104
            span.className = 'teapo-ts-syntax-' + det.displayParts[i].kind;
105
            element.appendChild(span);
106
//             var smallSpan = document.createElement('span');
107
//             smallSpan.style.fontSize = '4pt';
108
//             smallSpan.textContent = ' @teapo-ts-syntax-' + det.displayParts[i].kind+' ';
109
//             element.appendChild(smallSpan);
110
          }
111
        }
112
      };
113
    }
114
​
115
    onChanges(docChanges: CodeMirror.EditorChange[], summary: ChangeSummary) {
116
​
117
      this._changes.push(new TypeScript.TextChangeRange(
118
        new TypeScript.TextSpan(summary.lead, summary.mid),
119
        summary.mid));
120
​
121
      super.onChanges(docChanges, summary);
122
    }
123
​
124
    changes(): TypeScript.TextChangeRange[] {
125
      return this._changes;
126
    }
127
​
128
  }
129
​
130
  export function createCodeMirrorDoc(text: string): CodeMirror.Doc {
131
    return new CodeMirror.Doc(text || '', 'text/typescript');
132
  }
109:0